home   documenti/ unix/ solaris

Cambiare l'hostid di una sparc

picture of the NVRAM chip in an IPX Ogni macchina SUN con architettura 3/80, sun4c, sun4u, and sun4m contiene un chip NVRAM. Questo chip memorizza informazioni varie riguardanti la macchina (ad esempio boot device, memoria presente etc.etc.) attualizza il clock, e contiene appunto i dati dell'IDPROM, che sono composti da ethernet address, data della produzione, hostid, versione e checksum.

Il nome IDPROM e' usato per ragioni storiche: le vecchie macchine sun2, sun3 e sun4 usavano memorizzare l'indiriizzo ethernet e l'hostid in una PROM chiamata appunto IDPROM.

Molti produttori di software collegano la licenza all'hostid della macchina in quanto unico e difficile da cambiare. Cio' significa che se per caso si rompe qualcosa sulla nostra macchina produttiva, non possiamo semplicemente prendere l'HD e metterlo in una macchina identica: il software non funzionerebbe in quanto e' presente un diverso hostid.

La domanda sorge dunque spontanea: perche' pagare una licenza doppia per mantenere un cold-stanby?

 

Cambiare l'hostid (sun4c, sun4m, sun4d e sun4u)

Fare un backup delle informazioni contenute nell'hostid attuale. Con Solaris e' possibile mediante il comando /usr/sbin/prtconf -vp se vi trovate in OpenBoot  monitor con il comando .idprom  scrivete le informazioni da qualche parte, saranno utili nel caso si dovesse rimettere tutto nello stato originale.

Se gia' non siete in OpenBoot riavviare la macchina e fermare il boot son STOP-A: dovrebbe apparire l'ok prompt.

Il comando per riprogrammare la parte idprom dell'NVRAM e' mkp. mkp usa una notazione inversa, dunque i comandi saranno passati nella maniera: <value> <location> mkp ovvero il valore, la posizione in memoria e chiaramente il comando da eseguire.

byte(s) content
0 sempre 01 - formato/versione
1 e' il primo byte dell'hostid: rappresenta il tipo di macchina. (NON MODIFICARE)
2-7 6 bytes per l'indirizzo ethernet: i primi 3 sono 08-00-20 che identificano la macchina come una SUN.
8-b data di fabbricazione (normalmente tutti 00)
c il secondo byte dell'hostid
d il terzo byte dell'hostid
e il quarto byte dell'hostid
f l'IDPROM checksum: bit xor dei bytes 0-e

per modificare l'hostid e' necessario quindi andare a scrivere i nuovi valori negli indirizzi c, d ed e in piu' ricalcolare il checksum e scriverlo nell'indirizzo f.

Volendo cambiare l'hostid da 80112233 a 80778899 dovremo fare le senguenti operazioni:

ok 77 c mkp

ok 88 d mkp

ok 99 e mkp

ora ci resta da calcolare il checksum e scriverlo nella locazione f: lo potremmo fare a mano oppure farlo mediante l'interprete:

ok 0 f 0 do i idprom@ xor loop f mkp

che per quanto criptica possa sembrare non fa altro che leggere tutti i valori da 0 a f  mediante idprom@, xor-rarli e scrivere il risultato nella locazione f con mkp.

Questo e' quanto, al nuovo boot la macchina se tutto e' andato bene dovrebbe avere il nuovo hostid.

Attenzione a NON cambiare il primo byte dell'hostid, quello che rappresenta il  tipo di hardware su cui state lavorando, potrebbero succerede cose molto strane. I valori di questo campo sono:

Valore Hardware Valore Hardware
01 2/1x0 41 3/4x0
02 2/50 42 3/80
11 3/160 51 SPARCstation 1 (4/60)
12 3/50 52 SPARCstation IPC (4/40)
13 3/2x0 53 SPARCstation 1+ (4/65)
14 3/110 54 SPARCstation SLC (4/20)
17 3/60 55 SPARCstation 2 (4/75)
18 3/e 56 SPARCstation ELC
21 4/2x0 57 SPARCstation IPX (4/50)
22 4/1x0 61 4/e
23 4/3x0 71 4/6x0
24 4/4x0 72 SPARCstation 10 or SPARCstation 20
31 386i 80 SPARCstation Classic, LX, 4, 5, SS1000, Voyager, Ultra 1

 

 


send mail to rocco_gagliardi@gmx.net with question or comment about this site.  
copyright @2002 lupig  
made with UltraEdit32
my pgp key